Memory leaks are caused by processes with source code which allocates a memory segment, but fails to de-allocate the memory segment after use. This leaves the memory segment unavailable to be accessed by the running code and reduces the amount of memory that can be used in the system. If memory leaks continue being produced without being detected, eventually the process may run out of memory and crash the system. In embedded systems, processes typically communicate with each other. Due to this intercommunication, an operation in one process may lead to a memory leak in another process.